const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}

function substring(str, start, end) {
  return str.substring(start, end)
}
function includes(arr, value) {
  return arr.indexOf(value) >= 0;
}
/* 节流函数封装 */
function throttle(fn, gapTime) {
  if (gapTime == null || gapTime == undefined) {
    gapTime = 1500
  }
  let _lastTime = null
  // 返回新的函数
  return function () {
    let _nowTime = +new Date()
    if (_nowTime - _lastTime > gapTime || !_lastTime) {
      fn.apply(this, arguments) //将this和参数传给原函数
      _lastTime = _nowTime
    }
  }
}
/* 防抖函数封装 */
function debounce(fn, interval) {
  let timer;
  let delay = interval || 1000; // 间隔的时间，如果interval不传，则默认1秒
  return function () {
    let that = this;
    let args = arguments; // 保存此处的arguments，因为setTimeout是全局的，arguments不是防抖函数需要的。
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(function () {
      fn.apply(that, args); // 用apply指向调用debounce的对象，相当于this.fn(args);
    }, delay);
  };
}
/* 图片转 base64 */
function imgToBase64(filePath) {
  return new Promise((resolve, reject) => {
    let baseFormat = 'data:image/png;base64,'
    let base64 = wx.getFileSystemManager().readFileSync(filePath, 'base64')
    resolve(baseFormat + base64)
  })
}
module.exports = {
  formatTime,
  substring,
  throttle,
  debounce,
  includes: includes,
  imgToBase64
}